import os
from fastapi import FastAPI
from fastapi.staticfiles import StaticFiles


from lab_booking.routers import auth, equipment, reservations
from lab_booking.database import engine
from lab_booking import models

app = FastAPI(
    title="实验室设备预约系统 API",
    description="为微信小程序提供后端服务"
)


# ==================== 精确定位 static 文件夹 ====================
# 1. 获取 main.py 文件所在的目录的绝对路径
#    __file__ -> /path/to/project/lab_booking/main.py
#    os.path.dirname(os.path.abspath(__file__)) -> /path/to/project/lab_booking
CURRENT_DIR = os.path.dirname(os.path.abspath(__file__))


# 2. 使用 os.path.join 将当前目录和 "static" 拼接起来，形成绝对路径
#    结果: /path/to/project/lab_booking/static
STATIC_DIR = os.path.join(CURRENT_DIR, "static")

# 3. (推荐) 增加健壮性：如果目录不存在，则自动创建
#    这可以防止因忘记手动创建文件夹而导致的启动失败
os.makedirs(STATIC_DIR, exist_ok=True) 
os.makedirs(os.path.join(STATIC_DIR, "images"), exist_ok=True)


# 4. 使用这个计算好的绝对路径来挂载静态文件目录
app.mount("/static", StaticFiles(directory=STATIC_DIR), name="static")

# ========================================================================


# 将各个路由器的 API 路径注册到主应用中
app.include_router(auth.router, prefix="/auth") # 所有认证相关的接口都在 /auth 路径下
app.include_router(equipment.router) # 设备接口直接在根路径下
app.include_router(reservations.router) # 订单接口在 /orders 路径下


# === API Endpoints 定义 ===

# 根路径，可以用来测试服务是否正常运行
@app.get("/", tags=["系统状态"])
def read_root():
    return {"message": "欢迎使用设备预约系统 API"}
